﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using DynamicAuditor.DTOs;

namespace DynamicAuditor.DALAuditor
{
    /// <summary>
    /// Fecha: 29-Mayo-2011
    /// Autor: Lester Salazar Viales
    /// Descripcion: En esta clase se va a manejar todas las operaciones correspondientes a auditores tales como: Insercion, Actualizacion, Eliminacion
    /// y todo lo relaciona con auditores.
    /// </summary>
    public class clsAuditoresMg
    {
        //Declaracion de la varaiable tipo datacontext que vamos a utilizar en toda la clase.
        DynamicAuditorDataContext bd = new DynamicAuditorDataContext();

        public clsAuditoresMg()
        { 
        
        }


        public List<DTOs.dtoAuditores> ObterAuditores()
        {
            int i = 0;
            List<DTOs.dtoAuditores> auditores = new List<DTOs.dtoAuditores>();

            try
            {
                var cli = (from p in bd.Auditores
                           select p).ToList();

                foreach (Auditore auditor in cli)
                {
                    auditores.Add(new dtoAuditores());
                    auditores[i].IdAuditor = auditor.IdAuditor;
                    auditores[i].FirmaAuditor = auditor.FirmaAuditor;
                    auditores[i].Nombre = auditor.Nombre;
                    auditores[i].NumeroCISA = auditor.NumeroCISA;
                    

                    i++;
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error obteniendo los datos. " + ex.Message);
            }


            return auditores;
        }

        public DTOs.dtoAuditores ObtenerAuditoresporID(int IdAuditor)
        {
            DTOs.dtoAuditores auditor = new DynamicAuditor.DTOs.dtoAuditores();

            try
            {
                Auditore cli = bd.Auditores.Single(p => p.IdAuditor == IdAuditor);

                auditor.IdAuditor = cli.IdAuditor;
                auditor.NumeroCISA = cli.NumeroCISA;
                auditor.Nombre = cli.Nombre;
                auditor.FirmaAuditor = cli.FirmaAuditor;



            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error obteniendo los datos. " + ex.Message);
            }

            return auditor;
        }

        public int UpdateAuditores(DTOs.dtoAuditores auditor)
        {

            //Se retorna un 1 si el proceso se hizo correctamente de lo contrario se retorna un 0

            int x = 0;

            try
            {
                Auditore cli = bd.Auditores.Single(p => p.IdAuditor == auditor.IdAuditor);
                cli.Nombre = auditor.Nombre;
                cli.NumeroCISA = auditor.NumeroCISA;
                cli.FirmaAuditor = auditor.FirmaAuditor;
                cli.IdAuditor = auditor.IdAuditor;
               

                bd.SubmitChanges();
                x = 1;

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error actualizando los datos . " + ex.Message);

            }

            return x;

        }

        public int InsertAuditores(DTOs.dtoAuditores auditores)
        {
            //Se retorna un 1 si el proceso se realizo correctamente de lo contrario se retorna un 0

            int x = 0;
            Auditore cli = new Auditore();

            try
            {
                cli.Nombre = auditores.Nombre;
                cli.NumeroCISA = auditores.NumeroCISA;
                cli.FirmaAuditor = auditores.FirmaAuditor;
                cli.IdAuditor = auditores.IdAuditor;
                

                //Se procede a insertar la informacion del auditor
                bd.Auditores.InsertOnSubmit(cli);
                bd.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw new Exception("No se pudo insertar el cliente. " + ex.Message);
                x = 0;
            }

            x = 1;

            return x;
        }

        public int DeleteAuditor(DTOs.dtoAuditores auditor)
        {
            //Se retorna un 1 si el proceso se realizo correctamente de lo contrario se retorna un 0

            int x = 0;

            try
            {
                var cli = bd.Auditores.Single(p => p.IdAuditor == auditor.IdAuditor);

                bd.Auditores.DeleteOnSubmit(cli);
                bd.SubmitChanges();
                x = 1;
            }
            catch (Exception ex)
            {
                throw new Exception("No se pudo borrar el auditor " + ex.Message);
                x = 0;
            }


            return x;

        }



    }
}
